﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public interface IShape
{
    void Draw();
}

public class RectRange : IShape
{
    public void Draw()
    {
        //逻辑
    }
}

public class Circle : IShape
{
    public void Draw()
    {
        //逻辑
    }
}

public class Squre : IShape
{
    public void Draw()
    {
        //逻辑
    }
}

public class ShapeMarker
{
    /**
     在客户端和复杂系统之间再加一层，这一层将调用顺序，依赖关系等处理好。    
     * **/

    public RectRange rectRange { get; set; }
    public Circle circle { get; set; }
    public Squre squre { get; set; }

    public ShapeMarker()
    {
        this.rectRange = new RectRange();
        this.circle = new Circle();
        this.squre = new Squre();
    }

    public void DrawRectRange()
    {
        //执行前 逻辑。。。
        this.rectRange.Draw();
        //执行后 逻辑
    }


    public void DrawCircle()
    {
        //执行前 逻辑。。
        this.circle.Draw();
        //执行后 逻辑
    }


    public void DrawSqure()
    {
        //执行前 逻辑。。。
        this.squre.Draw();
        //执行后 逻辑
    }

}